﻿using System.Collections.Generic;
using Neturion.Dados;
using Neturion.IRepositorios;
using Neturion.Repositorios;
using Neturion.Utils;

namespace Neturion.Negocios
{
    /// <summary>
    /// 
    /// </summary>
    public class NegocioTipoRegistro
    {
        private IRepositorioTipoRegistro _repositorioTipoRegistro;

        /// <summary>
        /// 
        /// </summary>
        public NegocioTipoRegistro()
        {
            _repositorioTipoRegistro = new RepositorioTipoRegistro();
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="tipoRegistro"></param>
        /// <returns></returns>
        public TipoRegistro Inserir(TipoRegistro tipoRegistro)
        {
            if (string.IsNullOrEmpty(tipoRegistro.Codigo))
            {
                tipoRegistro.Codigo = GeradorCodigo.GerarCodigo(1);
                tipoRegistro.Codigo += (_repositorioTipoRegistro.ObterUltimoIdCodigoInteiro() + 1).ToString();
                tipoRegistro.Codigo += GeradorCodigo.GerarCodigo(1, tipoRegistro.Codigo);
            }
            
            return _repositorioTipoRegistro.Inserir(tipoRegistro);
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="tipoRegistro"></param>
        /// <returns></returns>
        public TipoRegistro Atualizar(TipoRegistro tipoRegistro)
        {
            return _repositorioTipoRegistro.Atualizar(tipoRegistro);
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="tipoRegistro"></param>
        public void Excluir(TipoRegistro tipoRegistro)
        {
            TipoRegistro tipoRegistroTmp = ObterPorId(tipoRegistro.TipoRegistroId);
            _repositorioTipoRegistro.Excluir(tipoRegistroTmp);
        }

        /// <summary>
        /// 
        /// </summary>
        /// <returns></returns>
        public IList<TipoRegistro> ObterTodos()
        {
            return _repositorioTipoRegistro.ObterTodos();
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public TipoRegistro ObterPorId(int id)
        {
            return _repositorioTipoRegistro.ObterPorId(id);
        }

        public TipoRegistro ObterPorCodigo(Usuario usuarioLogado, string codigo)
        {
            return _repositorioTipoRegistro.ObterPorCodigo(codigo);
        }
    }
}